package com.link.linkupjavaweb.service;

import com.link.linkupjavaweb.dto.UserLoginDTO;
import com.link.linkupjavaweb.dto.UserRegisterDTO;
import com.link.linkupjavaweb.entity.User;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * 用户Service接口
 */
public interface UserService {
    
    /**
     * 用户注册
     * @param registerDTO 注册信息
     * @param avatarFile 头像文件
     * @return 生成的账号
     */
    String register(UserRegisterDTO registerDTO, MultipartFile avatarFile) throws Exception;
    
    /**
     * 用户登录
     * @param loginDTO 登录信息
     * @return 用户信息
     */
    User login(UserLoginDTO loginDTO);
    
    /**
     * 根据ID获取用户
     * @param id 用户ID
     * @return 用户信息
     */
    User getUserById(Long id);
    
    /**
     * 更新用户在线状态
     * @param userId 用户ID
     * @param onlineStatus 在线状态
     */
    void updateOnlineStatus(Long userId, Integer onlineStatus);
    
    /**
     * 获取所有用户列表（分页）
     * @param page 页码
     * @param size 每页数量
     * @param keyword 搜索关键词（可选）
     * @return 用户列表
     */
    Map<String, Object> getUserList(Integer page, Integer size, String keyword);
    
    /**
     * 管理员添加用户
     * @param userDTO 用户信息
     * @return 用户对象
     */
    User addUser(com.link.linkupjavaweb.dto.UserManageDTO userDTO) throws Exception;
    
    /**
     * 管理员更新用户
     * @param userDTO 用户信息
     * @return 是否成功
     */
    boolean updateUser(com.link.linkupjavaweb.dto.UserManageDTO userDTO) throws Exception;
    
    /**
     * 删除用户
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean deleteUser(Long userId);
    
    /**
     * 禁用/启用用户
     * @param userId 用户ID
     * @param status 状态（0-正常，1-禁用）
     * @return 是否成功
     */
    boolean updateUserStatus(Long userId, Integer status);
}
